﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MigColetaMinMax
{
    public partial class FrmMaisFiltros : Form
    {
        //Instância do Formulário Principal
        FrmPrincipal frm = new FrmPrincipal();

        public FrmMaisFiltros(FrmPrincipal formP)
        {
            InitializeComponent();
            frm = formP; 
        }

        private void btCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cbLeiturista_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtMatricula.Text = MigColetaMinMax.Controle.Ctl_SQL.CtlConsultaSQL.ObterMatricula(cbLeiturista.Text);
            txtLeiturista.Text = MigColetaMinMax.Controle.Ctl_SQL.CtlConsultaSQL.ObterNomeDoLeituristaMat(txtMatricula.Text);
            if (txtMatricula.Text != string.Empty)
                txtMes.Text = string.Empty;
        }

        private void cbLeiturista_Enter(object sender, EventArgs e)
        {
            if (cbLeiturista.Items.Count == 0)
            {
                cbLeiturista.Items.Clear();                
                cbLeiturista.DataSource = MigColetaMinMax.Controle.Ctl_SQL.CtlConsultaSQL.ObterNomeDoLeiturista();                
            }
        }

        private void txtMatricula_KeyDown(object sender, KeyEventArgs e)
        {            
            TeclaKeyPress ky = new TeclaKeyPress();
            if (ky.TeclaEnterPress(sender, e) == true)
            {
                txtLeiturista.Text = MigColetaMinMax.Controle.Ctl_SQL.CtlConsultaSQL.ObterNomeDoLeituristaMat(txtMatricula.Text);

                if (txtLeiturista.Text == string.Empty)
                    txtMatricula.Text = string.Empty;

                txtMes.Focus();
            }

        }

        private void FrmMaisFiltros_Load(object sender, EventArgs e)
        {
            List<string> lst = new List<string>();

            string mes = DateTime.Now.Month.ToString().PadLeft(2, '0') + @"/" + DateTime.Now.Year.ToString();
            txtMes.Text = DateTime.Now.Month.ToString().PadLeft(2, '0') + @"/" + DateTime.Now.Year.ToString();

            txtMes.Items.Clear();
            if (mes != "04/2008")
            {
                lst = PreencherDomain(mes);

                foreach (string item in lst)
                {
                    txtMes.Items.Add(item);
                }
            }
        }

        private List<string> PreencherDomain(string mes)
        {
            string ms = string.Empty;
            string ano = string.Empty;
            List<string> retorno = new List<string>();

            if (mes == DateTime.Now.Month.ToString().PadLeft(2, '0') + @"/" + DateTime.Now.Year.ToString())
            {
                txtMes.Items.Add(mes);
            }
            while (mes != "04/2008")
            {
                if (mes.Substring(0, 2) == "01")
                {
                    ms = "12";
                    ano = (int.Parse(mes.Substring(3, 4)) - 1).ToString();
                }
                else
                {
                    ms = (int.Parse(mes.Substring(0, 2)) - 1).ToString().PadLeft(2, '0');
                    ano = (int.Parse(mes.Substring(3, 4))).ToString();
                }
                mes = ms + @"/" + ano;
                retorno.Add(ms + @"/" + ano);
            }

            return retorno;
        }

        private void txtMes_KeyDown(object sender, KeyEventArgs e)
        {
            TeclaKeyPress ky = new TeclaKeyPress();
            if (ky.TeclaEnterPress(sender, e) == true)
            {
                if (txtMes.Text.Length < 7)
                {
                    if (txtMes.Text.Length < 7 || txtMes.Text.Length < 0)
                    {
                        MessageBox.Show("O mês informado está inválido!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        txtMes.Focus();
                        return;
                    }                    
                    return;
                }
                if (int.Parse(txtMes.Text.Substring(0, 2)) < 1 || int.Parse(txtMes.Text.Substring(0, 2)) > 12)
                {
                    MessageBox.Show("O mês informado está inválido!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                else
                {
                    if (int.Parse(txtMes.Text.Substring(3, 4)) < 2008)
                    {
                        MessageBox.Show("Não há dados inferior ao Ano de 2008!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }                    
                }
            }
        }

        private void btOk_Click(object sender, EventArgs e)
        {
            if (ckLerPDB.Checked == true)
            {
                if (cbLeiturista.Text == string.Empty)
                {
                    cbLeiturista.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar um LEITURISTA na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (txtMes.Text == string.Empty)
                {
                    txtMes.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar o MÊS na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (cbRemessa.Text == string.Empty)
                {
                    cbRemessa.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar a REMESSA na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
            }

            if (ckLerPDB.Checked == false)
            {
                frm.txtMetodoOculto.Text = "LerPDB";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            if ((cbRemessa.Text != string.Empty) && (txtMes.Text != string.Empty) && (rbRoteiro.Checked==true) && (ckLerPDB.Checked==false))
            {                
                frm.txtMetodoOculto.Text = "ObterRoteiroRemMes";                
                frm.txtTipo.Text = "R";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;                
            }

            if ((cbRemessa.Text != string.Empty) && (txtMes.Text != string.Empty) && (rbLeitura.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterLeituraRemMes";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                
            }
            
            if ((cbRemessa.Text == string.Empty) && (txtMes.Text != string.Empty) && (rbRoteiro.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterRoteiroMes";
                frm.txtTipo.Text = "R";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
            }

            if ((cbRemessa.Text == string.Empty) && (txtMes.Text != string.Empty) && (rbLeitura.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterLeituraMes";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
            }

            if ((cbRemessa.Text == string.Empty) && (txtMatricula.Text !=string.Empty ) && (rbRoteiro.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterRoteiroLeiturista";
                frm.txtTipo.Text = "R";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            if ((cbRemessa.Text == string.Empty) && (txtMatricula.Text != string.Empty) && (rbLeitura.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterLeituraLeiturista";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            if ((cbRemessa.Text == string.Empty) && (txtMes.Text != string.Empty) && (txtMatricula.Text != string.Empty) && (rbRoteiro.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterRoteiroLeituristaMes";
                frm.txtTipo.Text = "R";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            if ((cbRemessa.Text == string.Empty) && (txtMes.Text != string.Empty) && (txtMatricula.Text != string.Empty) && (rbLeitura.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterLeituraLeituristaMes";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }
            
            if ((cbRemessa.Text != string.Empty) && (txtMes.Text != string.Empty) && (txtMatricula.Text != string.Empty) && (rbRoteiro.Checked == true) && (ckLerPDB.Checked==false))
            {
                frm.txtMetodoOculto.Text = "ObterRoteiroLeituristaRemMes";
                frm.txtTipo.Text = "R";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            if ((cbRemessa.Text != string.Empty) && (txtMes.Text != string.Empty) && (txtMatricula.Text != string.Empty) && (rbLeitura.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterLeituraLeituristaRemMes";
                frm.txtTipo.Text = "L";
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = txtMes.Text;
                frm.txtMatricula.Text = txtMatricula.Text;
            }

            //Histórico de Rotas            
            if ((cbRemessa.Text != string.Empty) && (ckHistorico.Checked == true))
            {
                frm.txtMetodoOculto.Text = "ObterHistoricoRotas";
                frm.txtTipo.Text = string.Empty;
                frm.txtRemessa.Text = cbRemessa.Text;
                frm.txtMes.Text = string.Empty;
                frm.txtMatricula.Text = string.Empty;
            }

            //Por Rotas            
            if ((txtRota.Text != string.Empty))
            {
                frm.txtMetodoOculto.Text = "ObterPorRotas";
                frm.txtRotas.Text = txtRota.Text;
                frm.txtTipo.Text = string.Empty;
                frm.txtRemessa.Text = string.Empty;
                frm.txtMes.Text = string.Empty;
                frm.txtMatricula.Text = string.Empty;
            }

            this.Close();
        }

        private void ckHistorico_CheckedChanged(object sender, EventArgs e)
        {
            if (ckHistorico.Checked == true && cbRemessa.Text == string.Empty)
            {
                txtRota.Text = string.Empty;
                MessageBox.Show("Selecione na Lista a Remessa para ser apresentado o Histórico de Rotas.", "Informação!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                cbRemessa.Focus();
            }
        }

        private void txtRota_KeyDown(object sender, KeyEventArgs e)
        {
            TeclaKeyPress ky = new TeclaKeyPress();
            if (ky.TeclaEnterPress(sender, e) == true)
            {
                cbRemessa.Text = string.Empty;
                ckHistorico.Checked = false;
                btOk.Focus();
            }
        }

        private void ckLerPDB_CheckedChanged(object sender, EventArgs e)
        {

            if (ckLerPDB.Checked == true)
            {
                if (cbLeiturista.Text == string.Empty)
                {
                    cbLeiturista.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar um LEITURISTA na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (txtMes.Text == string.Empty)
                {
                    txtMes.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar o MÊS na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                if (cbRemessa.Text == string.Empty)
                {
                    cbRemessa.Focus();
                    MessageBox.Show("Para Ler o PDB é necessário selecionar a REMESSA na Lista!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
            }

        }

    }
}
